import request from '@/config/axios'
import { Property } from '@/api/mall/product/spu'

/**
 * 班级信息
 */
export interface ClassVO {
  /**
   * 班级ID
   */
  id?: string
  /**
   * 开团记录ID
   */
  applyId?: string
  /**
   * 班级名称
   */
  gradeName: string
  /**
   * 班级管理员 团长ID
   */
  adminId?: string
  /**
   * 班级管理员 团长姓名
   */
  gradeAdmin?: string
  /**
   * 上课教练ID
   */
  coachId: string
  /**
   * 上课教练名称
   */
  gradeCoach: string
  /**
   * 上课地点
   */
  gradeAddress: string
  /**
   * 纬度
   */
  latitude: string
  /**
   * 经度
   */
  longitude: string
  /**
   * 课程配置信息 对应开团信息中的skuProperties
   */
  courseProperties?: Property[]
  /**
   * 班级成员
   */
  gradeUsers?: string
}

/** 班级成员 */
export interface gradeUser {
  /**
   * 班级成员ID
   */
  id?: string
  /**
   * 班级ID
   */
  gradeId?: string
  /**
   * 用户ID
   */
  userId?: string
  /**
   * 用户名
   */
  userName?: string
  /**
   * 小孩ID
   */
  childId?: string
  /**
   * 小孩名
   */
  childName?: string
}

// 创建/更新班级
export const createOrUpdateClass = (data: ClassVO) => {
  return request.post({ url: '/promotion/grade/createOrUpdate', data })
}

// 批量增加班级成员
export const bathAddUserToClass = (data: gradeUser) => {
  return request.post({ url: '/promotion/grade/bathAddUserToGrade', data })
}

// 单个增加班级成员
export const addUserToClass = (data: gradeUser) => {
  return request.post({ url: '/promotion/grade/addUserToGrade', data })
}

// 删除班级
export const deleteClass = (id: number) => {
  return request.delete({ url: `/admin-api/promotion/grade/deleteGrade/${id}` })
}

// 获得班级详情
export const getDetailById = (id: number) => {
  return request.post({ url: `/promotion/grade/getOne/${id}` })
}

// 获得班级列表 - 分页
export const getClassListByParam = (data: PageParam) => {
  return request.post({ url: '/promotion/grade/selectPageByParam', data })
}

// 获得班级列表 - 不分页
export const getClassList = (data: PageParam) => {
  return request.post({ url: '//promotion/grade/selectGradeInfoList', data })
}
